package views;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.util.Date;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import models.Account;
public class UserFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel topPanel, topPanel1;
private JTabbedPane jtp = new JTabbedPane();
private JPanel btnPanel;
private JPanel det;
private JButton addMoney, withdrawMoney, generateReports;
private static JTable table;
private static JTable reflectionTable;
private JScrollPane scrollPane, scrollPane1;
String header[] = { "ID", "Name", "AccId", "Sum", "Type", "Open Date", "Close Date" };
public UserFrame() {
setTitle("User Management Tool");
getContentPane().add(jtp);
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
det = new JPanel();
jtp.addTab("Accounts&Details", jp1);
jtp.addTab("Accounts", jp2);
jtp.addTab("See Details", det);
setSize(550, 550);
setBackground(Color.gray);
topPanel = new JPanel();
topPanel1 = new JPanel();
btnPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
jp1.add(topPanel, BorderLayout.CENTER);
jp1.add(btnPanel, BorderLayout.SOUTH);
jp2.add(topPanel1, BorderLayout.CENTER);
table = new JTable(0, 7);
for (int i = 0; i < table.getColumnCount(); i++) {
TableColumn column1 = table.getTableHeader().getColumnModel().getColumn(i);
column1.setHeaderValue(header[i]);
}
reflectionTable = new JTable();
initializeTable((DefaultTableModel) reflectionTable.getModel());
scrollPane = new JScrollPane(table);
scrollPane1 = new JScrollPane(reflectionTable);
topPanel.add(scrollPane, BorderLayout.CENTER);
topPanel1.add(scrollPane1, BorderLayout.CENTER);
addMoney = new JButton("Add Money");
withdrawMoney = new JButton("Withdraw Money");
generateReports = new JButton("Reports");
btnPanel.add(addMoney);
btnPanel.add(withdrawMoney);
btnPanel.add(generateReports);
setVisible(true);
}
private void initializeTable(DefaultTableModel tableModel) {
Class<?> c = Account.class;
Field[] fields = c.getDeclaredFields();
for (Field f : fields) {
if (f.getName().equals("serialVersionUID") || (f.getName().equals("rand"))) {
continue;
} else {
tableModel.addColumn(f.getName());
}
}
reflectionTable = new JTable(tableModel);
}
public void details(Account a, Date date) throws ParseException {
det.setLayout(new GridLayout(16, 0));
Random rand = new Random();
JLabel l1 = new JLabel("The holder id: " + String.valueOf(a.getP().getId()));
JLabel l2 = new JLabel("The holder name: " + String.valueOf(a.getP().getName()));
JLabel l3 = new JLabel("Account id: " + String.valueOf(a.getId()));
JLabel l4 = new JLabel("Money in account: " + String.valueOf(a.getSum()));
JLabel l5 = new JLabel("Type of the account: " + String.valueOf(a.getType()));
JLabel l6 = new JLabel("Open day fo the account: " + String.valueOf(a.getDate()));
JLabel l7 = new JLabel("Closing day for the account: " + String.valueOf(a.getCloseDate()));
JLabel l8 = new JLabel("Gain rate for deposit: " + "0.1");
JLabel l9 = new JLabel("Interest rate for withdraw" + "0.1");
JLabel l10 = new JLabel(
"The increade of the gaining rate is proposed in " + (rand.nextInt(10) + 1) + " months");
JLabel l11 = new JLabel("Last transaction: " + date);
det.add(l1);
det.add(l2);
det.add(l3);
det.add(l4);
det.add(l5);
det.add(l6);
det.add(l7);
det.add(l8);
det.add(l9);
det.add(l10);
det.add(l11);
}
public static JTable getTable() {
return table;
}
public void setTable(JTable table) {
UserFrame.table = table;
}
public final void setAddMoneyButtonActionListener(final ActionListener a) {
addMoney.addActionListener(a);
}
public final void setWithDrawButtonActionListener(final ActionListener a) {
withdrawMoney.addActionListener(a);
}
public final void setReportButtonActionListener(final ActionListener a) {
generateReports.addActionListener(a);
}
public static JTable getReflectionTable() {
return reflectionTable;
}
public static void setReflectionTable(JTable reflectionTable) {
UserFrame.reflectionTable = reflectionTable;
}
}